##### SCRIPT QUE GERA A TABELA 2 DO APENDICE #####

# 1. CARREGA PACOTES ------------------------------------------------------

library(tidyverse)
library(janitor)
library(naniar)
library(mice)
library(xlsx)

# 2. CARREGA DADOS ------------------------------------------------------

#' Nesta etapa, foi implementada a leitura dos dados combinados de Enade-RAIS (filtrado obs com salario)

# 3. IMPLEMENTA MODELOS DE REGRESSAO OLS --------------------------------

# 3.1 Modelo separado por área ----

imp_med <- filter(dados_graduados_empregados, area_curso_agreg == "Medicina")
imp_soc <- filter(dados_graduados_empregados, area_curso_agreg == "Ciências Sociais Aplicadas")
imp_ctem <- filter(dados_graduados_empregados, area_curso_agreg == "CTEM")

imp_dir <- filter(dados_graduados_empregados, area_curso_agreg == "Direito")
imp_edu <- filter(dados_graduados_empregados, area_curso_agreg == "Educação")
imp_eng <- filter(dados_graduados_empregados, area_curso_agreg == "Engenharia")

imp_hum <- filter(dados_graduados_empregados, area_curso_agreg == "Humanidades")
imp_sau <- filter(dados_graduados_empregados, area_curso_agreg == "Saúde e Bem-Estar")
imp_tec <- filter(dados_graduados_empregados, area_curso_agreg == "Tecnólogos")

f <- "log(salario_hora) ~ tp_sexo + raca_cor + idade_faixa + edu_fam + nt_ce_quartil_area + nt_fg_quartil + trab_grad + igc_faixa_4c + setor_ies_bin + regiao_curso"

model_med <- with(imp_med, lm(as.formula(f)))
model_soc <- with(imp_soc, lm(as.formula(f)))
model_ctem <- with(imp_ctem, lm(as.formula(f)))
model_dir <- with(imp_dir, lm(as.formula(f)))
model_edu <- with(imp_edu, lm(as.formula(f)))
model_eng <- with(imp_eng, lm(as.formula(f)))
model_hum <- with(imp_hum, lm(as.formula(f)))
model_sau <- with(imp_sau, lm(as.formula(f)))
model_tec <- with(imp_tec, lm(as.formula(f)))

combine_med <- pool(model_med)
combine_soc <- pool(model_soc)
combine_ctem <- pool(model_ctem)
combine_dir <- pool(model_dir)
combine_edu <- pool(model_edu)
combine_eng <- pool(model_eng)
combine_hum <- pool(model_hum)
combine_sau <- pool(model_sau)
combine_tec <- pool(model_tec)

# 4. GERA TABELA DE COEFICIENTES EXPONENCIADOS ---------------------------

# Funcao que calcula coeficientes e indica significancia estatistica

prepara_tabela <- function(x) {
      mutate(x,
             coef_exp = round(exp(estimate), 3),
             coef_exp = paste0(coef_exp, " (", round(std.error, 3), ")"),
             coef_exp = case_when(p.value < 0.001 ~ paste(coef_exp, "***"),
                                  p.value < 0.01 ~ paste(coef_exp, "**"), 
                                  p.value < 0.05 ~ paste(coef_exp, "*"), 
                                  p.value < 0.1 ~ paste(coef_exp, "+"),
                                  TRUE ~ coef_exp)) %>% 
            select(term, coef_exp)
}

tab_exp_med <- summary(combine_med) %>% prepara_tabela(.)
tab_exp_soc <- summary(combine_soc) %>% prepara_tabela(.)
tab_exp_ctem <- summary(combine_ctem) %>% prepara_tabela(.)
tab_exp_dir <- summary(combine_dir) %>% prepara_tabela(.)
tab_exp_edu <- summary(combine_edu) %>% prepara_tabela(.)
tab_exp_eng <- summary(combine_eng) %>% prepara_tabela(.)
tab_exp_hum <- summary(combine_hum) %>% prepara_tabela(.)
tab_exp_sau <- summary(combine_sau) %>% prepara_tabela(.)
tab_exp_tec <- summary(combine_tec) %>% prepara_tabela(.)

tab_exp_completa <- left_join(tab_exp_med, tab_exp_soc, by = "term") %>% 
      left_join(tab_exp_ctem, by = "term") %>% 
      left_join(tab_exp_dir, by = "term") %>% 
      left_join(tab_exp_edu, by = "term") %>% 
      left_join(tab_exp_eng, by = "term") %>% 
      left_join(tab_exp_hum, by = "term") %>% 
      left_join(tab_exp_sau, by = "term") %>% 
      left_join(tab_exp_tec, by = "term") %>% 
      setNames(c("term", "med", "soc", "ctem", "dir", "edu", "eng", "hum", "sau", "tec"))

# 5. EXPORTA TABELA -------------------------------------------------------

xlsx::write.xlsx(tab_exp_completa, 
                 append = T,
                 file = "output/Tabela A2.xlsx",
                 sheetName = "raw",  
                 row.names = F)

